/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package bccomp;

/**
 *
 * @author adam
 */
public enum StringToByte {
    MAIN("main",(byte)0x11),
    STACK("stack",(byte)0x12),
    LOCALS("locals",(byte)0x13),
    
    METHOD("method",(byte)0x21),
    INVOKE("invoke",(byte)0x22),
    
    LDS("lds",(byte)0x30),
    LDC("ldc",(byte)0x31),
    STORE("store",(byte)0x32),
    LOAD("load",(byte)0x33),
    ASTORE("astore",(byte)0x34),
    ALOAD("aload",(byte)0x35),
    NEWARRAY("newarray",(byte)0x36),
    DEALLOC("dealloc",(byte)0x37),
    

    IADD("iadd",(byte)0x41),
    SADD("sadd",(byte)0x42),
    ISUB("isub",(byte)0x43),
    IMUL("imul",(byte)0x44),
    IDIV("idiv",(byte)0x45),
    
    IF("if",(byte)0x51),
    NE("ne",(byte)0x52),
    EQ("eq",(byte)0x53),
    GE("ge",(byte)0x54),
    LE("le",(byte)0x55),
    GT("gt",(byte)0x56),
    LT("lt",(byte)0x57),

    OFR("of",(byte)0x61),
    //OFW("ofw",(byte)0x62),
    CFR("cf",(byte)0x62),
    //CFW("cfw",(byte)0x65),

    PRINT("print",(byte)0x71),
    PRINTLN("println",(byte)0x72),
    WRITE("write",(byte)0x73),
    WRITELN("writeln",(byte)0x74),
    IREAD("iread",(byte)0x75),

    LABEL("label",(byte)0x00),
    GOTO("goto",(byte)0x81),
    IRETURN("ireturn",(byte)0x82),
    RETURN("return",(byte)0x83),
    END("end",(byte)0x84),
    
    CONVERT("convert",(byte)0x91);
    
    
    
    
   private String name;
   private byte byteSymbol;
   
   private StringToByte(){
       
   }
   
   private StringToByte(String name, Byte byteSymbol){
       this.name=name;
       this.byteSymbol=byteSymbol;
   }
   
   public static byte convertToByte(String name) {
       for(StringToByte stb: values() ){
            if(name.equalsIgnoreCase(stb.name)){
                return stb.byteSymbol;
            }
        }
        return (byte)0xFF;
       
   }

}
